[Chapter 33] 33.7 Pitfalls
Author: Bryan Costales & Eric Allman
Date: 1999-01-06T20:26:06Z

#

| Chapter 33 Database Macros |

## 33.7 Pitfalls

- The result of a subroutine call cannot be looked up directly in a database map. Consider this RHS of a rule:

  >     $( uucp $>96 $1 $)

  Here, the intention is to pass `$1` to rule set 96 and then to look up the result in the `uucp` map. Instead, the literal value 96 and the value in `$1` are looked up together and fail first. Then `$1` is passed to rule set 96, and the result of that subroutine call becomes the result of the RHS.

- The `%s` of IDA sendmail databases will not work as is with V8 sendmail. To make it work, replace it with a `%1` throughout the IDA source file, then reverse the keys and values, and finally recreate the database file. This conversion can easily be automated with sed(1) or awk(1).

- If you are running a Solaris 2.4 or earlier release of Sun's operating system, your database files should not live on `tmpfs` mounted file systems. File locking was not implemented for `tmpfs` until Solaris 2.5.

- Avoid assuming that all `K` command switches mean the same thing for all classes. The ad hoc nature of class submissions by outsiders makes that assumption perilous.

- Not all initialization errors or lookup errors are reported. For some of them you will see an indication of an error only if you use the `-d38.2` debugging switch (see Section 37.5.128, -d38.2).

33.6 Database Maps and m4 |  | 33.8 Alphabetized Reference